<?php
/**
 * Clase para trabajar con textos en varios idiomas
 * @author Sahib J. Leo
 */
class Lang
{
  private static $_source = '';

  /**
   * Guarda los array que ya han sido cargados para solo cargarlos una vez.
   * @var array
   */
  private static $_loaded_sources = array();

  /**
   * Devuelve un texto en el lenguaje requerido
   *
   * @var string $source Nombre del archivo con la definicion de los textos
   *             sin extension ".php"
   * @var string $key Nombre de la variable que contiene el texto
   * @var string $lang Prefijo del lenguaje, si se omite se usa el valor de Lang::getLang()
   * @return string Devuelve el texto solicitado
   */
  public static function get($key, $lang = null)
  {
    // Si no se define $lang se utiliza el valor de la constante LANG
    $lang = $lang == null ? LANG : $lang;

    if( !isset(self::$_loaded_sources[self::$_source][$lang][$key]) ){
      return '[' . self::$_source . "/$lang/$key]";
    } else {
      return self::$_loaded_sources[self::$_source][$lang][$key];
    }
  }

  public static function setSource($source)
  {
    // Cargar el recurso y guardarlo si no esta cargado ya.
    if( !isset(self::$_loaded_sources[$source]) ){
      $text = array();
      require PATH . "langs/$source.php";
      self::$_loaded_sources[$source] = $text;
      $text = null;
    }

    $old_source = self::$_source;
    self::$_source = $source;
    return $old_source;
  }
}